// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Unlit/带结构体的顶点片元着色器"
{
    Properties
    {
     
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"
            

          
            struct a2v{
            float4 pos:POSITION;//顶点位置
            float3 normal:NORMAL;//法线
            float4 texcoord:TEXCOORD;//纹理图
            };

              //用一个结构体来定义顶点着色器的输出
            struct v2f{
            float4 pos:SV_POSITION;//裁剪空间的位置;
            fixed3 color:COLOR0;//保存颜色信息
            };


            //顶点着色器,传入a2v结构体的数据
            v2f vert(a2v v){
            v2f o;//定义v2f
            o.pos=UnityObjectToClipPos(v.pos);//获取顶点在屏幕上的裁剪位置

            o.color=v.normal*0.5+fixed3(0.5,0.5,0.5); //颜色为法线值,进行的一个混合,也可以直接返回v.normal
            return o;
            }
            
            //将插值后的i.Color显示在裁剪屏幕上
            fixed4 frag(v2f i):SV_Target{
            return fixed4(i.color,1.0);
            }


            ENDCG
        }
    }
}
